package leetcode_700;

import java.util.Arrays;

/**
 *@author 周杨
 *TaskScheduler_621 任务调度问题
 *describe:AC 60% 贪心算法 只找最大调度
 *2018年9月19日 下午4:55:13
 */
public class TaskScheduler_621 {
	public int leastInterval(char[] tasks, int n) {
		int[] alpNum = new int[26];
		for (int i = 0; i < tasks.length; i++) {
			alpNum[tasks[i] - 'A']++;
		}
		Arrays.sort(alpNum);
		int i, maxNum = 0;
		for (i = 24; alpNum[i] == alpNum[25]; i--) {
			maxNum++;//先处理大的 只看最高要求的任务要多少调度
		}
		//结果要么是(alpNum[25] - 1)*n 为其分配这么多初始位置 其它的都可以插入
		//每多一个重复最大值 则增加一个位置 alpNum[25]表示会增加这么多个idle
		return Math.max((alpNum[25] - 1) * n + alpNum[25] + maxNum, tasks.length);
	}
}
